// 用户相关API

/**
 * 用户登录
 * @param {Object} data - 登录信息
 * @param {string} data.username - 用户名
 * @param {string} data.password - 密码
 * @returns {Promise} - 返回登录结果
 */
export const login = async (data) => {
  try {
    const response = await fetch('/api/users/login', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(data)
    });
    return await response.json();
  } catch (error) {
    console.error('登录请求错误:', error);
    throw error;
  }
};

/**
 * 用户注册
 * @param {Object} data - 注册信息
 * @param {string} data.username - 用户名
 * @param {string} data.password - 密码
 * @param {string} data.email - 邮箱
 * @param {string} [data.nickname] - 昵称
 * @returns {Promise} - 返回注册结果
 */
export const register = async (data) => {
  try {
    const response = await fetch('/api/users/register', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(data)
    });
    return await response.json();
  } catch (error) {
    console.error('注册请求错误:', error);
    throw error;
  }
};

/**
 * 获取当前用户信息
 * @returns {Promise} - 返回用户信息
 */
export const getCurrentUser = async () => {
  try {
    const token = localStorage.getItem('token');
    if (!token) {
      // 返回标准格式的错误响应，而不是抛出错误
      return {
        code: 401,
        message: '未登录，请先登录',
        data: null
      };
    }

    const response = await fetch('/api/users/me', {
      method: 'GET',
      headers: {
        'Authorization': `Bearer ${token}`
      }
    });
    return await response.json();
  } catch (error) {
    console.error('获取用户信息错误:', error);
    // 返回标准格式的错误响应，而不是抛出错误
    return {
      code: 500,
      message: '获取用户信息失败',
      data: null
    };
  }
};

/**
 * 更新用户信息
 * @param {Object} data - 用户信息
 * @param {string} [data.nickname] - 昵称
 * @param {string} [data.email] - 邮箱
 * @param {string} [data.phone] - 手机号
 * @param {string} [data.gender] - 性别
 * @param {string} [data.bio] - 个人简介
 * @param {string} [data.avatar] - 头像URL
 * @returns {Promise} - 返回更新结果
 */
export const updateUserInfo = async (data) => {
  try {
    const token = localStorage.getItem('token');
    if (!token) {
      // 返回标准格式的错误响应，而不是抛出错误
      return {
        code: 401,
        message: '未登录，请先登录',
        data: null
      };
    }

    // 从localStorage获取用户ID
    const user = JSON.parse(localStorage.getItem('user') || '{}');
    const userId = user.id;
    
    if (!userId) {
      // 返回标准格式的错误响应，而不是抛出错误
      return {
        code: 400,
        message: '无法获取用户ID',
        data: null
      };
    }

    const response = await fetch(`/api/users/${userId}`, {
      method: 'PUT',
      headers: {
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${token}`
      },
      body: JSON.stringify(data)
    });
    return await response.json();
  } catch (error) {
    console.error('更新用户信息错误:', error);
    // 返回标准格式的错误响应，而不是抛出错误
    return {
      code: 500,
      message: '更新用户信息失败',
      data: null
    };
  }
};

/**
 * 修改密码
 * @param {Object} data - 密码信息
 * @param {string} data.currentPassword - 当前密码
 * @param {string} data.newPassword - 新密码
 * @returns {Promise} - 返回修改结果
 */
export const changePassword = async (data) => {
  try {
    const token = localStorage.getItem('token');
    if (!token) {
      // 返回标准格式的错误响应，而不是抛出错误
      return {
        code: 401,
        message: '未登录，请先登录',
        data: null
      };
    }

    const response = await fetch('/api/users/change-password', {
      method: 'PUT',
      headers: {
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${token}`
      },
      body: JSON.stringify(data)
    });
    return await response.json();
  } catch (error) {
    console.error('修改密码错误:', error);
    // 返回标准格式的错误响应，而不是抛出错误
    return {
      code: 500,
      message: '修改密码失败',
      data: null
    };
  }
};

/**
 * 更新安全设置
 * @param {Object} data - 安全设置
 * @param {boolean} [data.passwordLogin] - 是否启用密码登录
 * @param {boolean} [data.smsLogin] - 是否启用短信登录
 * @param {boolean} [data.emailLogin] - 是否启用邮箱登录
 * @param {boolean} [data.loginNotification] - 是否启用登录通知
 * @returns {Promise} - 返回更新结果
 */
export const updateSecuritySettings = async (data) => {
  try {
    const token = localStorage.getItem('token');
    if (!token) {
      // 返回标准格式的错误响应，而不是抛出错误
      return {
        code: 401,
        message: '未登录，请先登录',
        data: null
      };
    }

    const response = await fetch('/api/users/security-settings', {
      method: 'PUT',
      headers: {
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${token}`
      },
      body: JSON.stringify(data)
    });
    return await response.json();
  } catch (error) {
    console.error('更新安全设置错误:', error);
    // 返回标准格式的错误响应，而不是抛出错误
    return {
      code: 500,
      message: '更新安全设置失败',
      data: null
    };
  }
};

/**
 * 退出登录
 */
export const logout = () => {
  localStorage.removeItem('token');
  localStorage.removeItem('user');
};